/**
 * api配置
 */

import axios from 'axios'
import store from "../store";
import router from "../router"

axios.interceptors.response.use(
  (response) => {
    if (response.headers['session-status'] === 'timeout') {
      window.localStorage.removeItem('token')
      router.replace({
        path: '/login',
        query: {redirect: router.currentRoute.fullPath}
      })
    }
    return response
  },
  (error) => {
    return Promise.reject(error.response.data)
  }
)

export default {
  /**
   * 客流数据分析
   */
  PassengerData: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/report/passengerData', {
        params: params
      })
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  /**
   * 单门店年龄性别比较
   */
  AgeSexualStoreData: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/report/ageSexualStoreData', {
        params: params
      })
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  /**
   * 各分店到店性别比例
   */
  SexualDate: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/report/sexualDate', {
        params: params
      })
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  /**
   * 获取用户上下文信息
   */
  GetTurnoverUserContext: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/api/user', {
        params: params
      })
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
	/**
	* 地图分析
	*/
	provinceEntersData: (params, cb) => {
		return new Promise((resolve, reject) => {
			axios.get('/report/provinceEnters', {
				params: params
			})
			.then((res) => {
				cb(res.data)
				resolve(res.data)
			})
			.catch((res) => {
				return Promise.reject(res)
			})
		})
	},
	/**
	* 地图分析
	*/
	RushHourData: (params, cb) => {
		return new Promise((resolve, reject) => {
      axios.get('/report/weekPeakPeriodData', {
				params: params
			})
			.then((res) => {
				cb(res.data)
				resolve(res.data)
			})
			.catch((res) => {
				return Promise.reject(res)
			})
		})
	},
  /**
  * 当天客流
  */
  DayPeakPeriodData: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/report/dayPeakPeriodData', {
        params: params
      })
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  /**
  * 查询此用户下所有门店信息或品牌
  */
  SearchAreas: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/areas/searchAreas', {
        params: params
      })
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  /**
  * 登录
  */
  Login: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/login', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  //DayReport
  DayReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/report/dayReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  Agegroup: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/agegroup', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  WeeksReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/report/weeksReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  VolumeReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/strike/volumeReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  VolumeSexReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/strike/volumeSexReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  VolumeAgeReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/strike/volumeAgeReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  VolumeWeekReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/strike/volumeWeekReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  VolumeWeekDayReport: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/strike/volumeWeekDayReport', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  Logout: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.post('/logout', params)
      .then((res) => {
        cb(res.data)
        resolve(res.data)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  },
  Index: (params, cb) => {
    return new Promise((resolve, reject) => {
      axios.get('/index', {
        params: params
      })
      .then((res) => {
        cb(res)
        resolve(res)
      })
      .catch((res) => {
        return Promise.reject(res)
      })
    })
  }
}
